package com.qfjy.client;

import com.qfjy.client.impl.VideoInfoFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 用于通知Feign组件对该接口进行代理(不需要编写接口实现)，
 name属性 指定FeignClient名称。指定我们要调用哪个服务。
 name属性会作为微服务的名称，用于服务发现。使用者可直接通过@Autowired注入。

 path属性 定义当前FeignClient的统一前缀

 fallback属性定义容错的处理类，当调用远程接口失败或超时时，会调用对应接口的容错逻辑。fallback指定的类必须实现@FeignClient标记的接口


 */
@FeignClient(name ="qf-video",path = "videoInfo",fallback = VideoInfoFallback.class)
public interface VideoInfoFeignClient {


    @GetMapping("select")
    @ResponseBody
    public String selectVideoInfoByPcode(@RequestParam("pcode") String pcode);

    /**

     //调用视频微服务  RestTemplate方式完成服务间通信
     // String url="http://localhost:8085/videoInfo/select?pcode="+pcode;


    采用Ribbon+Rest方式
     1：不要使用ip+port的方式访问，取而代之的是应用名
     2：这种方式发送的请求都会被ribbon拦截，ribbon从Nacos注册中心获取服务列表，然后采用均衡策略进行访问

    String url="http://qf-video/videoInfo/select?pcode="+pcode;
    String videoResult= restTemplate.getForObject(url,String.class);
        log.info("查询的是视频微服务结果--》{}",videoResult);
     */

    @GetMapping("select1")
    @ResponseBody
    public String selectVideoInfoByPcod1e(@RequestParam("pcode") String pcode);
}
